﻿using System.ComponentModel.Composition;
using System.Windows.Media;
using Microsoft.VisualStudio.Text.Classification;
using Microsoft.VisualStudio.Utilities;

namespace Highlighterr
{
    //these Classification Format Definitions contain the display names and default values
    //for the different type settings (they appear in Tools > Options > Environment > Fonts and Colors)


    [Export(typeof(EditorFormatDefinition))]
    [ClassificationType(ClassificationTypeNames = "HighlighterrType")]
    [Name("HighlighterrType")]
    [UserVisible(true)] //this should be visible to the end user
    [Order(Before = Priority.Default)] //set the priority to be after the default classifiers
    internal sealed class HighlighterrTypeFormat : ClassificationFormatDefinition
    {
        public HighlighterrTypeFormat()
        {
            this.DisplayName = "Highlighterr Type"; //human readable version of the name
            this.ForegroundColor = Colors.Teal;
        }
    }


    [Export(typeof(EditorFormatDefinition))]
    [ClassificationType(ClassificationTypeNames = "HighlighterrSomething")]
    [Name("HighlighterrSomething")]
    [UserVisible(true)] //this should be visible to the end user
    [Order(Before = Priority.Default)] //set the priority to be after the default classifiers
    internal sealed class HighlighterrSomethingFormat : ClassificationFormatDefinition
    {
        public HighlighterrSomethingFormat()
        {
            this.DisplayName = "Highlighterr Something"; //human readable version of the name
            this.ForegroundColor = Colors.SkyBlue;
        }
    }


    [Export(typeof(EditorFormatDefinition))]
    [ClassificationType(ClassificationTypeNames = "HighlighterrTypedef")]
    [Name("HighlighterrTypedef")]
    [UserVisible(true)] //this should be visible to the end user
    [Order(Before = Priority.Default)] //set the priority to be after the default classifiers
    internal sealed class HighlighterrTypedefFormat : ClassificationFormatDefinition
    {
        public HighlighterrTypedefFormat()
        {
            this.DisplayName = "Highlighterr Typedef"; //human readable version of the name
            this.ForegroundColor = Colors.RoyalBlue;
        }
    }


    [Export(typeof(EditorFormatDefinition))]
    [ClassificationType(ClassificationTypeNames = "HighlighterrFunction")]
    [Name("HighlighterrFunction")]
    [UserVisible(true)] //this should be visible to the end user
    [Order(Before = Priority.Default)] //set the priority to be after the default classifiers
    internal sealed class HighlighterrFunctionFormat : ClassificationFormatDefinition
    {
        public HighlighterrFunctionFormat()
        {
            this.DisplayName = "Highlighterr Function"; //human readable version of the name
            this.ForegroundColor = Colors.Navy;
        }
    }


    [Export(typeof(EditorFormatDefinition))]
    [ClassificationType(ClassificationTypeNames = "HighlighterrEnum")]
    [Name("HighlighterrEnum")]
    [UserVisible(true)] //this should be visible to the end user
    [Order(Before = Priority.Default)] //set the priority to be after the default classifiers
    internal sealed class HighlighterrEnumFormat : ClassificationFormatDefinition
    {
        public HighlighterrEnumFormat()
        {
            this.DisplayName = "Highlighterr Enum"; //human readable version of the name
            this.ForegroundColor = Color.FromArgb(255, 106, 106, 0);//dark olive
        }
    }


    [Export(typeof(EditorFormatDefinition))]
    [ClassificationType(ClassificationTypeNames = "HighlighterrMacro")]
    [Name("HighlighterrMacro")]
    [UserVisible(true)] //this should be visible to the end user
    [Order(Before = Priority.Default)] //set the priority to be after the default classifiers
    internal sealed class HighlighterrMacroFormat : ClassificationFormatDefinition
    {
        public HighlighterrMacroFormat()
        {
            this.DisplayName = "Highlighterr Macro"; //human readable version of the name
            this.ForegroundColor = Color.FromArgb(255, 121, 0, 88);//purpley
        }
    }






}
